package com.wxy.service;

import com.wxy.eneity.ColumnMessage;
import com.wxy.eneity.IdConnection;
import com.wxy.eneity.NewColumn;
import com.wxy.eneity.RenameColumn;

import java.util.List;
import java.util.Map;

/**
 * @author 47868
 */
public interface TableMessageService {
    /**
     * 获取表结构
     * @param connection 数据库连接
     * @param tableName 表名
     * @return 返回数据
     */
    List<ColumnMessage> getTableStruct(IdConnection connection,String tableName);

    /**
     * 获取数据表信息
     * @param connection 数据库连接
     * @param tableName 表名
     * @return 返回数据
     */
    List<List<String>> getMessage(IdConnection connection,String tableName);

    /**
     * 添加新数据列
     * @param connection 数据库连接
     * @param tableName 操作的数据库名
     * @param newColumn 新列信息
     * @return 返回添加状态
     */
    String addColumn(IdConnection connection, String tableName, NewColumn newColumn);

    /**
     * 删除数据列
     * @param connection 数据库连接
     * @param tableName 数据表名
     * @param columnName 要删除的列名
     * @return 返回状态
     */
    String deleteColumn(IdConnection connection, String tableName, String columnName);

    /**
     * 修改列名
     * @param connection 数据库连接
     * @param tableName 数据表名
     * @param renameColumn 新列名
     * @return 返回状态
     */
    String renameColumn(IdConnection connection, String tableName, RenameColumn renameColumn);

    /**
     *添加数据
     * @param connection 数据库连接
     * @param tableName 数据表名
     * @param data 数据
     * @return 添加状态
     */
    String addData(IdConnection connection,String tableName, Map<String,Object> data);

    /**
     * 更新数据
     * @param connection 数据库连接
     * @param tableName 表名
     * @param data 要更新的数据
     * @return 更新状态
     */
    String updateData(IdConnection connection,String tableName, Map<String,Object> data);

    /**
     * 删除行
     * @param connection 数据库连接
     * @param tableName 数据表名
     * @param type 数据类型
     * @param name 列名
     * @param id 根据id删除
     * @return 删除状态
     */
    String deleteRow(IdConnection connection, String tableName,String type,String name,Object id);

    /**
     * 删除所有元素
     * @param connection 数据库连接
     * @param tableName 数据库名
     * @return 删除状态
     */
    String deleteAll(IdConnection connection,String tableName);
}
